home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / advanc2a / vbmemcap.bas < prev    next >
BASIC Source File  |  1998-03-18  |  6KB  |  161 lines

  1. Attribute VB_Name = "MemCap"
  2. '*
  3. '* Author: E. J. Bantz Jr.
  4. '* Copyright: None, use and distribute freely ...
  5. '* E-Mail: ejbantz@usa.net
  6. '* Web: http://www.inlink.com/~ejbantz
  7.  
  8. '// ------------------------------------------------------------------
  9. '//  Windows API Constants / Types / Declarations
  10. '// ------------------------------------------------------------------
  11. Public Const WS_BORDER = &H800000
  12. Public Const WS_CAPTION = &HC00000
  13. Public Const WS_SYSMENU = &H80000
  14. Public Const WS_CHILD = &H40000000
  15. Public Const WS_VISIBLE = &H10000000
  16. Public Const WS_OVERLAPPED = &H0&
  17. Public Const WS_MINIMIZEBOX = &H20000
  18. Public Const WS_MAXIMIZEBOX = &H10000
  19. Public Const WS_THICKFRAME = &H40000
  20. Public Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
  21. Public Const SWP_NOMOVE = &H2
  22. Public Const SWP_NOSIZE = 1
  23. Public Const SWP_NOZORDER = &H4
  24. Public Const HWND_BOTTOM = 1
  25. Public Const HWND_TOPMOST = -1
  26. Public Const HWND_NOTOPMOST = -2
  27. Public Const SM_CYCAPTION = 4
  28. Public Const SM_CXFRAME = 32
  29. Public Const SM_CYFRAME = 33
  30. Public Const WS_EX_TRANSPARENT = &H20&
  31. Public Const GWL_STYLE = (-16)
  32. Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  33.  
  34.  
  35. '// Memory manipulation
  36. Declare Function lStrCpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
  37. Declare Function lStrCpyn Lib "kernel32" Alias "lstrcpynA" (ByVal lpString1 As Any, ByVal lpString2 As Long, ByVal iMaxLength As Long) As Long
  38. Declare Sub RtlMoveMemory Lib "kernel32" (ByVal hpvDest As Long, ByVal hpvSource As Long, ByVal cbCopy As Long)
  39. Declare Sub hmemcpy Lib "kernel32" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
  40.     
  41. '// Window manipulation
  42. Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  43. Declare Function DestroyWindow Lib "user32" (ByVal hndw As Long) As Boolean
  44. Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
  45. Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String) As Long
  46.  
  47. Public lwndC As Long       ' Handle to the Capture Windows
  48.  
  49. Function MyFrameCallback(ByVal lwnd As Long, ByVal lpVHdr As Long) As Long
  50.  
  51.     Debug.Print "FrameCallBack"
  52.     
  53.     Dim VideoHeader As VIDEOHDR
  54.     Dim VideoData() As Byte
  55.     
  56.     '//Fill VideoHeader with data at lpVHdr
  57.     RtlMoveMemory VarPtr(VideoHeader), lpVHdr, Len(VideoHeader)
  58.     
  59.     '// Make room for data
  60.     ReDim VideoData(VideoHeader.dwBytesUsed)
  61.     
  62.     '//Copy data into the array
  63.     RtlMoveMemory VarPtr(VideoData(0)), VideoHeader.lpData, VideoHeader.dwBytesUsed
  64.  
  65.     Debug.Print VideoHeader.dwBytesUsed
  66.     Debug.Print VideoData
  67.     
  68. End Function
  69.  
  70. Function MyYieldCallback(lwnd As Long) As Long
  71.  
  72.     Debug.Print "Yield"
  73.  
  74. End Function
  75.  
  76. Function MyErrorCallback(ByVal lwnd As Long, ByVal iID As Long, ByVal ipstrStatusText As Long) As Long
  77.     
  78.     If iID = 0 Then Exit Function
  79.     
  80.     Dim sStatusText As String
  81.     Dim usStatusText As String
  82.     
  83.     'Convert the Pointer to a real VB String
  84.     sStatusText = String$(255, 0)                                      '// Make room for message
  85.     lStrCpy StrPtr(sStatusText), ipstrStatusText                       '// Copy message into String
  86.     sStatusText = Left$(sStatusText, InStr(sStatusText, Chr$(0)) - 1)  '// Only look at left of null
  87.     usStatusText = StrConv(sStatusText, vbUnicode)                     '// Convert Unicode
  88.             
  89.     LogError usStatusText, iID
  90.  
  91. End Function
  92.  
  93. Function MyStatusCallback(ByVal lwnd As Long, ByVal iID As Long, ByVal ipstrStatusText As Long) As Long
  94.  
  95.     If iID = 0 Then Exit Function
  96.    
  97.     Dim sStatusText As String
  98.     Dim usStatusText As String
  99.     
  100.     '// Convert the Pointer to a real VB String
  101.     sStatusText = String$(255, 0)                                      '// Make room for message
  102.     lStrCpy StrPtr(sStatusText), ipstrStatusText                       '// Copy message into String
  103.     sStatusText = Left$(sStatusText, InStr(sStatusText, Chr$(0)) - 1)  '// Only look at left of null
  104.     usStatusText = StrConv(sStatusText, vbUnicode)                     '// Convert Unicode
  105.     
  106.     frmMain.StatusBar.SimpleText = usStatusText
  107.     Debug.Print "Status: ", usStatusText, iID
  108.  
  109.     Select Case iID '
  110.  
  111.     
  112.     End Select
  113.  
  114.  
  115. End Function
  116.  
  117. Sub ResizeCaptureWindow(ByVal lwnd As Long)
  118.  
  119.     Dim CAPSTATUS As CAPSTATUS
  120.     Dim lCaptionHeight As Long
  121.     Dim lX_Border As Long
  122.     Dim lY_Border As Long
  123.     
  124.     
  125.     lCaptionHeight = GetSystemMetrics(SM_CYCAPTION)
  126.     lX_Border = GetSystemMetrics(SM_CXFRAME)
  127.     lY_Border = GetSystemMetrics(SM_CYFRAME)
  128.     
  129.     '// Get the capture window attributes .. width and height
  130.     If capGetStatus(lwnd, VarPtr(CAPSTATUS), Len(CAPSTATUS)) Then
  131.         
  132.         '// Resize the capture window to the capture sizes
  133.         SetWindowPos lwnd, HWND_BOTTOM, 0, 0, _
  134.                            CAPSTATUS.uiImageWidth + (lX_Border * 2), _
  135.                            CAPSTATUS.uiImageHeight + lCaptionHeight + (lY_Border * 2), _
  136.                            SWP_NOMOVE Or SWP_NOZORDER
  137.     End If
  138.  
  139.     Debug.Print "Resize Window."
  140.  
  141. End Sub
  142.  
  143. Function MyVideoStreamCallback(lwnd As Long, lpVHdr As Long) As Long
  144.  
  145.     Beep  '// Replace this with your code!
  146.   
  147. End Function
  148.  
  149. Function MyWaveStreamCallback(lwnd As Long, lpVHdr As Long) As Long
  150.  
  151.     Debug.Print "WaveStream"
  152.  
  153. End Function
  154.  
  155. Sub LogError(txtError As String, lID As Long)
  156.  
  157.     frmMain.StatusBar.SimpleText = txtError
  158.     Debug.Print "Error: ", txtError, lID
  159.  
  160. End Sub
  161.